import axios from "axios";
import qs from "qs";
// import app from "../main.js";
import Vue from 'vue'
import {Modal, notification,message} from 'ant-design-vue'


/****** 创建axios实例 ******/
const service = axios.create({
    baseURL: process.env.BASE_URL,  // api的base_url
    timeout: 5000  // 请求超时时间
});


/****** request拦截器==>对请求参数做处理 ******/
service.interceptors.request.use(config => {
   /* app.$vux.loading.show({
        text: '数据加载中……'
    });*/

    config.method === 'post'
        ? config.data = qs.stringify({...config.data})
        : config.params = {...config.params};

    // console.log(config.isContentType);
    // if(config.isContentType)console.log(config);

    // isContentType为true时不设置Content-Type属性，此外如果Content-Type为空则设置为utf-8
    if(!config.headers['Content-Type'])config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';

 /*   if(config.isContentType){
        delete config.headers['Content-Type'];
        console.log(config.headers['Content-Type']);
    }*/


    return config;
}, error => {  //请求错误处理
    /*app.$vux.toast.show({
        type: 'warn',
        text: error
    });*/
    message.error(error);
    Promise.reject(error)
});


/****** respone拦截器==>对响应做处理 ******/
service.interceptors.response.use(
    response => {  //成功请求到数据
        // app.$vux.loading.hide();
        return response.data;
/*        if (response.data.result === 'TRUE') {
        } else {
            /!*app.$vux.toast.show({  //常规错误处理
                type: 'warn',
                text: response.data.data.msg
            });*!/
        }*/
    },
    error => {  //响应错误处理
        // console.log('error');
        // console.log(error);
        // console.log(JSON.stringify(error));
        if (error.response) {
            let data = error.response.data;
            const token = Vue.ls.get("ACCESS_TOKEN");
            switch (error.response.status) {
                case 403:
                    // notification.error({ message: '系统提示', description: '拒绝访问',duration: 4})
                    message.error('拒绝访问!');
                    break
                case 500:
                    let path = window.location.href
                    // notification.error({ message: '系统提示', description:'Token失效，请重新登录!',duration: 4})
                    message.error('Token失效，请重新登录!');
                    if(token && data.message.includes("Token失效") && path.indexOf('/user/login') < 0){
                        window.location.href = "/note/login";
                    }
                    break
                case 404:
                    // notification.error({ message: '系统提示', description:'很抱歉，资源未找到!',duration: 4})
                    message.error('很抱歉，资源未找到!');
                    break
                case 504:
                    // notification.error({ message: '系统提示', description: '网络超时'})
                    message.error('网络超时!');
                    break
                case 401:
                    // notification.error({ message: '系统提示', description:'未授权，请重新登录',duration: 4})
                    message.error('未授权，请重新登录!');
                    if (token) {
                        store.dispatch('Logout').then(() => {
                            setTimeout(() => {
                                window.location.reload()
                            }, 1500)
                        })
                    }
                    break
                default:
                    /*notification.error({
                        message: '系统提示',
                        description: data.tip,
                        duration: 4
                    })*/
                    message.error(data.tip);
                    break
            }
        }


/*        let text = JSON.parse(JSON.stringify(error)).response.status === 404
            ? '404'
            : '网络异常，请重试';*/
/*        app.$vux.toast.show({
            type: 'warn',
            text: text
        });*/

        return Promise.reject(error)
    }
);
export default service;